/* 
	功能：对象数组按指定字段排序 
	返回：排序后的对象数组

	如：某对象数组结构如下：
	const singers = [
		{ name: '马媛', age: 32, Beautylvl: 5 },
		{ name: '熊晓云', age: 40, Beautylvl: 9 },
		{ name: '吴嬿娇', age: 29, Beautylvl: 4 },
		{ name: '文捷', age: 39, Beautylvl: 3 },
	];
    
    */
   function compareValues(key, order = 'asc') {
		return function innerSort(a, b) {
		  if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {
			// 该属性在其中一个对象上不存在
			return 0;
		  }
	  
		  const varA = (typeof a[key] === 'string')
			? a[key].toUpperCase() : a[key];
		  const varB = (typeof b[key] === 'string')
			? b[key].toUpperCase() : b[key];
	  
		  let comparison = 0;
		  if (varA > varB) {
			comparison = 1;
		  } else if (varA < varB) {
			comparison = -1;
		  }
		  return (
			(order === 'desc') ? (comparison * -1) : comparison
		  );
		};
	  }
	
	module.exports={
		compareValues
	}
	
	
	
	
	/**
	 * 页面使用
	
		页面引入：
		// 对象数组排序：升序排列
		let sorting  = require("../../../utils/CustomFunction/objArr_sort")
	
	
		注：以下的band 与 name为 对象数组中的对象属性名，即需要排序的字段
	
		//数组按`age`排序，默认为升序
		Array.sort(sorting.compareValues('age'));
	
		// 数组按 `age` 降序排序
		Array.sort(sorting.compareValues('age', 'desc'));
	
		// 数组按 `name` 升序排序
		Array.sort(sorting.compareValues('name'));
	
		// 数组按`Beautylvl` 降序排序
		Array.sort(sorting.compareValues('Beautylvl', 'desc'));
	
	
	*/